/**
* Copyright (c) By zengqh.
*
* This program is just for fun or demo, in the hope that it  
* will be useful, you can redistribute it and/or modify freely.
*
* Time: 2013/03/09
* File: ProgramUniform.h
* Blog: http://www.cnblogs.com/zengqh/
**/

#pragma once

#include <render_system/BaseRenderSystem/ProgramUniform.h>

namespace HY
{
class OGLProgramUniform : public ProgramUniform
{
public:
	virtual void set(int x);
	virtual void set(float x);
	virtual void set2(const int* x);
	virtual void set2(const float* x);
	virtual void set3(const int* x);
	virtual void set3(const float* x);
	virtual void set4(const int* x);
	virtual void set4(const float* x);
	virtual void set(const Matrix4& x);

	virtual void set(const Color& clr);
	virtual void set(const Vector2& v);
	virtual void set(const Vector3& v);
	virtual void set(const Vector4& v);

protected:
	uint32			program_;
	int32			uniform_loc;

protected:
	OGLProgramUniform() {}
	virtual ~OGLProgramUniform() {}
};


}